博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts 框架 之 文件上传下载案例
阅读量:4937 次
发布时间:2019-06-11

本文共 5805 字,大约阅读时间需要 19 分钟。

Struts 框架 文件上传

  1. 先准备 Struts 环境 (我使用的是struts 2.3.4版本)

    导jar包:

      jar包的具体作用在前面的文章有讲。

    

    配置 web.xml

Struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
Struts2
/*

    然后开始开发action 

    上传action类:FileUpload  src/com.yif.fileupload

    jsp : <input type="file" name="file1">

    action类中使用  File file1 和 jsp中名字要相同

    file1FileName  file1ContentType 中的file1 需要与jsp中对应

import java.io.File;import org.apache.commons.io.FileUtils;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionSupport;public class FileUpload extends ActionSupport {    // 对应表单:    private File file1;    // 文件名    private String file1FileName;    // 文件的类型(MIME)    private String file1ContentType;    public void setFile1(File file1) {        this.file1 = file1;    }    public void setFile1FileName(String file1FileName) {        this.file1FileName = file1FileName;    }    public void setFile1ContentType(String file1ContentType) {        this.file1ContentType = file1ContentType;    }    @Override    public String execute() throws Exception {        /****** 拿到上传的文件,进行处理 ******/        // 把文件上传到upload目录        // 获取上传的目录路径        String path = ServletActionContext.getServletContext().getRealPath(                "/upload");        // 创建目标文件对象        File destFile = new File(path, file1FileName);        // 把上传的文件,拷贝到目标文件中        FileUtils.copyFile(file1, destFile);        return SUCCESS;    }}

 

    开发下载文件 action类: DownAction  src/com.yif.fileupload

    list方法 将上传文件的路径下的文件 放在list中写道请求中。

package com.yif.fileupload;import java.io.File;import java.io.InputStream;import java.io.UnsupportedEncodingException;import java.net.URLEncoder;import java.util.Map;import org.apache.struts2.ServletActionContext;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class DownAction extends ActionSupport {        /*************1. 显示所有要下载文件的列表*********************/    public String list() throws Exception {        //得到upload目录路径        String path = ServletActionContext.getServletContext().getRealPath("/upload");        // 目录对象        File file  = new File(path);        // 得到所有要下载的文件的文件名        String[] fileNames =  file.list();        // 保存        ActionContext ac = ActionContext.getContext();        // 得到代表request的map (第二种方式)        Map
request= (Map
) ac.get("request"); request.put("fileNames", fileNames); return "list"; } /*************2. 文件下载*********************/ private String fileName; public void setFileName(String fileName) { // 处理传入的参数中问题(get提交) try { fileName = new String(fileName.getBytes("ISO8859-1"),"UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } // 把处理好的文件名,赋值 this.fileName = fileName; } //2. 下载提交的业务方法 (在struts.xml中配置返回stream) public String down() throws Exception { return "download"; } // 3. 返回文件流的方法 public InputStream getAttrInputStream(){ return ServletActionContext.getServletContext().getResourceAsStream("/upload/" + fileName); } // 4. 下载显示的文件名(浏览器显示的文件名) public String getDownFileName() { // 需要进行中文编码 try { fileName = URLEncoder.encode(fileName, "UTF-8"); } catch (UnsupportedEncodingException e) { throw new RuntimeException(e); } return fileName; } }

 

    写upload.xml    src/com.yif.fileupload

    下载配置详细:

 

    
application/octet-stream
attrInputStream
attachment;filename=${downFileName}
1024     

 

txt,jpg,jar
/e/success.jsp
/e/error.jsp
/e/list.jsp
application/octet-stream
attrInputStream
attachment;filename=${downFileName}
1024

 

    配置struts.xml  src/struts.xml

 

    upload.jsp页面(前端采用Bootstrap框架)   WebRoot/e/upload.jsp

    

文件上传

View Code

 

    list.jsp页面                WebRoot/e/list.jsp

    

下载列表

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
编号 文件名 操作
${vs.count } ${fileName }
下载
View Code

 

    实现效果:

    error.jsp  success.jsp略

 

转载于:https://www.cnblogs.com/loveincode/p/5421378.html

你可能感兴趣的文章
文件类型,文件权限
查看>>
Xamarin.Forms教程开发的Xcode的下载安装
查看>>
js 将json字符串转换为json兑现
查看>>
java读取properties配置文件
查看>>
C/C++语言经典著作
查看>>
分布式文件系统之MogileFS实现
查看>>
qtcreator 错误error:stray'\243'in program
查看>>
工作之命令小总结(7):tail命令
查看>>
LVS+keepalived负载均衡
查看>>
YII分页显示数据
查看>>
Android下获取状态栏的高度
查看>>
Start Developing iOS Apps Today系列(六)
查看>>
UITableview中cell重用引起的内容重复的问题
查看>>
stm32 ADC使用 单通道 多通道
查看>>
Windows服务器配置与管理
查看>>
UVA 10003 Cutting Sticks
查看>>
DRP项目总结
查看>>
图的连通性——无向图的连通分量和生成树
查看>>
Linux安装更新JDK
查看>>
VM10.0上创建Windows server 2008 SP2,并且,安装loadrunner11
查看>>